package com.ruan.pojo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
     * 项目
     */
    @Data
    public class Project implements Serializable {

        private static final long serialVersionUID = 1L;//???

        private Long id;

        //相关客户
        private Long clientId;
        //负责人id
        private Long employeeId;
        //部门(默认是负责人的部门)
        private Long departmentId;

        //项目名称
        private String projectName;

        //项目具体内容
        private String description;

    // 项目分配时间 -- 项目开始时间
    @TableField(fill = FieldFill.INSERT)//插入时填充字段//ctrl+点击FieldFill，看到DEFAULT是默认不处理
    private LocalDateTime createTime;//新增，执行insert语句时来维护这个字段的值

    @TableField(fill = FieldFill.INSERT_UPDATE)//插入和更新时填充字段
    private LocalDateTime updateTime;//插入和更新的时候，都需要重新设置这个字段的值

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//.SSS'Z'"
    private LocalDateTime endDate;
    // 实际完成时间//手动点击完成按钮，弹出，是否已完成了//(默认为空)理应和最终更新时间保持一致
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    private LocalDateTime completionTime;

    //可以使用枚举类型来表示数据库中的 ENUM 类型。
    // 对于 completion_status ENUM('onGoing', 'completed')，
    // 您可以按照以下方式在 Java 实体类中进行定义
    private CompletionStatus completionStatus;
    public enum CompletionStatus {
        onGoing,
        completed
    }

    //订单状态 0待付款，1已付款，2项目已取消'
    private Integer payStatus;

    // 项目付款时间(默认为空)付款后填充
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    private LocalDateTime checkoutTime;

    //支付方式 0银行卡,1微信,2支付宝'
    private Integer payMethod;

    //(预计)总收入
    private BigDecimal amount;
    //实际总收入(定金+尾款)
    private BigDecimal actualAmount;

    //(预计)总成本    利润总额 = 总收入(amount) - 总成本(cost)
    private BigDecimal cost;
    //实际总成本    利润总额 = 总收入(amount) - 总成本(cost)
    private BigDecimal actualCost;
//所得税率
    private BigDecimal tax;
//净利润
    private BigDecimal profit;
}
